
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
// 
//   http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

/**
 * AUTO-GENERATED FILE. DO NOT MODIFY.
 */

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
// 
//   http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

/**
 * LegendVisualProvider is an bridge that pick encoded color from data and
 * provide to the legend component.
 */
var LegendVisualProvider =
/** @class */
function () {
	function LegendVisualProvider( // Function to get data after filtered. It stores all the encoding info
		getDataWithEncodedVisual, // Function to get raw data before filtered.
		getRawData) {
		this._getDataWithEncodedVisual = getDataWithEncodedVisual;
		this._getRawData = getRawData;
	}

	LegendVisualProvider.prototype.getAllNames = function () {
		var rawData = this._getRawData(); // We find the name from the raw data. In case it's filtered by the legend component.
		// Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.

		return rawData.mapArray(rawData.getName);
	};

	LegendVisualProvider.prototype.containName = function (name) {
		var rawData = this._getRawData();

		return rawData.indexOfName(name) >= 0;
	};

	LegendVisualProvider.prototype.indexOfName = function (name) {
		// Only get data when necessary.
		// Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.
		// Invoking Series#getData immediately will throw an error.
		var dataWithEncodedVisual = this._getDataWithEncodedVisual();

		return dataWithEncodedVisual.indexOfName(name);
	};

	LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {
		// Get encoded visual properties from final filtered data.
		var dataWithEncodedVisual = this._getDataWithEncodedVisual();

		return dataWithEncodedVisual.getItemVisual(dataIndex, key);
	};

	return LegendVisualProvider;
}();

export default LegendVisualProvider;